// Loesung_von_Aufgabe_2.3.4_2b_elastischer_Stoss

// Versuche zum elastischen Stoß 

// Lösung zur Teilaufgabe b): Gelb u1 = 0.5   Rot u2 = 1.5

float x1; // Ortskoordinate des gelben Körpers
float x2 = 250; // Ortskoordinate des roten Körpers
float v1 = 1; // Geschwindigkeit des gelben Körpers
float v2 = 0; // Geschwindigkeit des roten Körpers
float u1; // Geschwindigkeit des gelben Körpers nach dem Stoß
float u2; // Geschwindigkeit des roten Körpers nach dem Stoß
float m1 = 3; // Masse des gelben Körpers
float m2 = 1; // Masse des roten Körpers
float t = 1; // Zeit

void setup() 
{
  size(600, 200); // Fenstergröße
}

void draw() 
{
  background(255); // Hintergrundfarbe
  fill(0, 0, 255); // Schriftfarbe
  textSize(32); // Schriftgröße
  textAlign(CENTER); // Die Mitte des Textes wird auf den x-Wert 300 gesetzt
  text("vollkommen elastischer Stoß", 300, 50); 

  fill(255, 255, 0); // gelber Körper
  rect(x1, 200 - m1*20, 50, m1*20);

  fill(255, 0, 0);// roter Körper
  rect(x2, 200 - m2*20, 50, m2*20);

  x1 = x1 + v1 * t; // Ortskoordinate des gelben Körpers zur Zeit t
  x2 = x2 + v2 * t; // Ortskoordinate des roten Körpers zur Zeit t

  if (x1 >= x2 - 50 && v1 - v2 > 0) /* Bei der Bedingung v1 - v2 > 0 bewegen sich die beiden 
   Körper aufeinander zu und bei x1 >= x2 berühren sie sich */
  {
    u1 = (2*m2*(v2)+(m1-m2)*v1)/(m1+m2); // Geschwindigkeit von Gelb nach den Stoß wird berechnet
    u2 = (2*m1*v1+(m2-m1)*(v2))/(m1+m2); // Geschwindigkeit von Rot nach den Stoß wird berechnet

    v1 = u1; // v1 nimmt den Wert von u1 an
    v2 = u2; // v2 nimmt den Wert von u2 an

    println("Gelb u1 =", u1, "    ", "Rot u2 =", u2);
  }
}